package com.ship.dispatch.model;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ship.common.core.mapping.Label;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 调度优化方案新增model
 *
 * @author zhangyh
 * @since 2023-10-17
 */
@Data
public class SpDispatchSchemeDetailModel implements Serializable {

    /**
     * 资源合同id
     */
    private Long conId;

    /**
     * 装载港id数组，loadingSort:[1,2...]
     */
    @NotNull(message = "请选择装载港")
    private List<Long> loadingSort;

    /**
     * 预计装载时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "请选择预计装载时间")
    private Date expectedLoadingDate;

    /**
     * 资源合同id（销售）
     */
    private Long sellerConId;

    /**
     * 资源合同id（销售）
     */
    private Long sellerResourceContract;

    /**
     * 卸载港id数组，unloadSort:[1,2...]
     */
    @NotNull(message = "请输入卸载港")
    private List<Long> unloadSort;

    /**
     * 预计卸载时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date expectedUnloadingWindow;

    /**
     * 转载量
     */
    @NotNull(message = "请输入转载量")
    private BigDecimal goodsQuantity = BigDecimal.ZERO;

    /**
     * 装载量货量单位(1:MMBtu,2:m³,3:MT)
     */
    @Label(value = "货量单位",enumContent = "装卸载量单位",multiSelect = true)
    private Integer quantityUnit;

    /**
     * 卸载量
     */
    @NotNull(message = "请输入转载量")
    private BigDecimal unloadGoodsQuantity = BigDecimal.ZERO;

    /**
     * 卸载量货量单位(1:MMBtu,2:m³,3:MT)
     */
    @Label(value = "货量单位",enumContent = "装卸载量单位",multiSelect = true)
    private Integer unloadQuantityUnit;

    /**
     * 船速
     */
    @NotNull(message = "请输入船速")
    private BigDecimal speed;

    /**
     * 航线数组 1巴拿马，2好望角，3苏伊士
     * route:[1,2,3]
     */
    private List<Integer> route;

    /**
     * 资源类型（1：现货，2：潜在投标）
     */
    @NotNull(message = "请输入资源类型")
    private Integer isPotential;


    /**
     * 船型起
     */
    private BigDecimal shipModelStart;

    /**
     * 船型止
     */
    private BigDecimal shipModelEnd;

    /**
     * 油耗
     */
    private BigDecimal oilConsumption;

    /**
     * 船旗国数组，flagState:[中国，俄罗斯...]
     */
    private List<String> flagState;

    /**
     * 指定船舶，船舶imo数组，imo:[1,2...]
     */
    private List<String> imo;

    /**
     * 途径海峡（多个用英文“,”分隔）
     */
    private String passStrait;

    /**
     * 途径海区（多个用英文“,”分隔）
     */
    private String passArea;

}
